import { addGlobalUncaughtErrorHandler, registerMicroApps, start } from 'qiankun'
import { QiankunFrame } from '@lhy-assist/qiankun'
import { qiankunFrame } from './frame/frame'
import { ref } from 'vue'
import { globalErrorHandler } from './error-handler'

// export class QiankunMain {
//   /**
//    * 微应用加载状态
//    *
//    * @static
//    *
//    * @memberOf QiankunMain
//    */
//   static loadingApp = ref(false)
//
//   /**
//    * 启动微应用
//    *
//    * @static
//    *
//    * @memberOf QiankunMain
//    */
//   static start = start
//
//   /**
//    * qiankunFrame实例
//    *
//    * @static
//    *
//    * @memberOf QiankunMain
//    */
//   static qiankunFrame = qiankunFrame
//
//   /**
//    * 是否已注册
//    *
//    * @protected
//    * @static
//    *
//    * @memberOf QiankunMain
//    */
//   protected static registried = false
//
//   /**
//    * 注册微应用
//    *
//    * @static
//    * @param {HTMLElement} container
//    * @param {QiankunAppConfig[]} apps
//    *
//    * @memberOf QiankunMain
//    */
//   static registryApps(container: HTMLElement, apps: QiankunAppConfig[]) {
//     if (this.registried) {
//       return
//     }
//
//     QiankunFrame.registryApps(
//       apps,
//       {
//         container,
//         frame: qiankunFrame,
//       },
//       {
//         beforeLoad: async app => {
//           this.loadingApp.value = true
//         },
//         afterMount: async app => {
//           this.loadingApp.value = false
//         },
//         beforeUnmount: async app => {},
//       }
//     )
//
//     addGlobalUncaughtErrorHandler(globalErrorHandler)
//     this.registried = true
//   }
//
//   /**
//    * 销毁
//    *
//    * @static
//    *
//    * @memberOf QiankunMain
//    */
//   public static destroy() {
//     QiankunFrame.destroy()
//   }
//
//   /**
//    * 路由跳转
//    *
//    * @static
//    * @param {string} url
//    *
//    * @memberOf QiankunMain
//    */
//   public static goRouter(url: string) {
//     window.history.pushState(
//       {
//         current: url,
//       },
//       '',
//       url
//     )
//   }
// }
//
// export class QiankunAppConfig {
//   protected static APP_CONFIG_MAP = new Map<string, QiankunAppConfig>()
//
//   public static getApp(appName: string) {
//     return this.APP_CONFIG_MAP.get(appName)
//   }
//
//   public entry: string
//
//   constructor(public name: string, public domain: string, public activeRule: string) {
//     this.entry = domain + '/'
//     QiankunAppConfig.APP_CONFIG_MAP.set(name, this)
//   }
// }
